class Federacao < ActiveRecord::Base
  before_save :reformar_dados
  before_update :reformar_dados

  has_many :unidade_federacaos

  AttributesNames = {
      :nome => "Nome",
      :sigla_dois_digitos => "Sigla com dois dígitos",
      :sigla_tres_digitos => "Sigla com três dígitos",
      :situacao => "Situação"
  };

  validates_presence_of :nome, :sigla_dois_digitos, :sigla_tres_digitos, :situacao
  validates_uniqueness_of :nome, :sigla_dois_digitos, :sigla_tres_digitos
  validates_length_of :nome, :in => 1..40, :message => "de tamanho excedido"
  validates_length_of :sigla_dois_digitos, :in => 1..2, :message => "de tamanho excedido"
  validates_length_of :sigla_tres_digitos, :in => 1..3, :message => "de tamanho excedido"

  def reformar_dados
    self.nome.strip!
    self.nome.upcase!
    self.nome.squish!
    self.sigla_dois_digitos.strip!
    self.sigla_dois_digitos.upcase!
    self.sigla_dois_digitos.squish!
    self.sigla_tres_digitos.strip!
    self.sigla_tres_digitos.upcase!
    self.sigla_tres_digitos.squish!
  end

  private
    def self.localizar_federacao(federacao)
      if not federacao.nome.nil?
        Federacao.find(:first, :conditions => ["nome = ?", "#{federacao.nome}"])
      elsif
        Federacao.find(:first, :conditions => ["nome = ?", "#{federacao.sigla_dois_digitos}"])
      else
        return false
      end
    end

    def self.criar_federacao(federacao)
      if federacao.federacao_exite?(federacao.nome)
        federacao = Federacao.new
        federacao.nome = federacao.nome
        federacao.sigla_dois_digitos = federacao.sigla_dois_digitos
        federacao.sigla_tres_digitos = federacao.sigla_tres_digitos
        federacao.codigo = federacao.codigo
        federacao.situacao = Situacao.find_by_nome("ATIVO").codigo
        federacao.save!
        return federacao
      else
        return federacao_padrao
      end
    end

    def self.federacao_padrao
      nome = "BRASIL"
      if Federacao.find(:all).empty? or not federacao_exite?(nome)
        federacao = Federacao.new
        federacao.nome = nome
        federacao.sigla_dois_digitos = "BR"
        federacao.sigla_tres_digitos = "BRA"
        federacao.codigo = '76'
        federacao.situacao = Situacao.find_by_nome("ATIVO").codigo
        federacao.save!
      end
    end
  
    def self.federacao_exite?(nome)
      if Federacao.find(:first, :conditions => ["nome = ?", "#{nome}"])
        return true
      else
        return false
      end
    end
end